package com.resou.reader.data.tinder.remote;

import com.resou.reader.api.entry.Result;
import com.resou.reader.api.entry.ResultList;
import com.resou.reader.data.tinder.tinder.CartBook;
import com.resou.reader.data.tinder.tinder.SlideBean;

import io.reactivex.Observable;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;

/**
 * 滑一滑页面的接口
 */
public interface TinderService {

    /**
     * 获取划一划列表的列表
     *
     * @param page     页码
     * @param token    用户的token
     * @param deviceId 设备标识，填入"app"即可
     * @return 包含滑动列表的result
     */
    @POST("book/findSlide/{page}")
    Observable<ResultList<SlideBean>> getSlideList(@Path("page") int page, @Query("token") String token, @Query("device") String deviceId);

    /**
     * 从收藏夹中删除指定的书籍
     *
     * @param token     用户的token
     * @param bookIdStr 书籍的id，bookId
     * @return 删除的result
     */
    @POST("shoppingCart/deleteShopCart")
    Observable<Result<String>> delete(@Query("token") String token, @Query("bookIdStr") String bookIdStr);

    /**
     * 添加书本到收藏夹
     *
     * @param token  用户的token
     * @param bookId 书籍的id，bookId
     * @return 包含添加到收藏夹的result
     */
    @POST("shoppingCart/shop/{bookId}")
    Observable<Result> addToShoppingCart(@Path("bookId") String bookId, @Query("token") String token);

    /**
     * 获取收藏夹中书本的数量
     *
     * @param token 用户的token
     * @return 包含数量的result
     */
    @POST("shoppingCart/getCartCount")
    Observable<Result<String>> getCartCount(@Query("token") String token);

    /**
     * 获取收藏夹中书本的列表
     *
     * @param token 用户的token
     * @return 包含列表的result
     */
    @POST("shoppingCart/getCartBookListAll")
    Observable<ResultList<CartBook>> getCartBookListAll(@Query("token") String token);

    /**
     * 获取收藏夹中书本的列表
     *
     * @param token 用户的token
     * @return 包含列表的result
     */
    @POST("shoppingCart/getCartBookList/1")
    Observable<ResultList<CartBook>> getCartBookList(@Query("token") String token);

}
